package com.zxy.leetcode._01100_01199._01150_01159;

/**
 * https://leetcode-cn.com/problems/day-of-the-year/
 *
 * 一年中的第几天
 * 给你一个按 YYYY-MM-DD 格式表示日期的字符串 date，
 * 请你计算并返回该日期是当年的第几天。
 *
 * 通常情况下，我们认为 1 月 1 日是每年的第 1 天，1 月 2 日是每年的第 2 天，
 * 依此类推。每个月的天数与现行公元纪年法（格里高利历）一致。
 *
 * 标签：日期
 */
public class Test01154 {

    public static void main(String[] args) {
        Test01154 test = new Test01154();
        System.out.println(test.dayOfYear("2021-01-09"));
        System.out.println(test.dayOfYear("2003-03-01"));
    }

    public int dayOfYear(String date) {
        int[] daysOfMonth={0,31,28,31,30,31,30,31,31,30,31,30,31};
        String[] strings = date.split("-");
        int year = Integer.parseInt(strings[0]);
        int month = Integer.parseInt(strings[1]);
        int day = Integer.parseInt(strings[2]);

        int days = 0;
        for (int m=1; m<month; m++) {
            days += daysOfMonth[m];
        }
        days += day;
        if (month > 2 && isLeapYear(year)) {
            days ++;
        }

        return days;
    }

    // 是否闰年
    private boolean isLeapYear(int y) {
        return (y%400 == 0) || (y%4 == 0 && y%100 != 0);
    }
}
